The term “Web service” is understood to mean a software system designed to support interoperable machine-to-machine interaction over a network. The Web service is a standardized service encapsulating the functions of an application in such a way that other applications can locate and access the service. Web services (WS) are used also for implementing a service oriented architecture (SOA) for engaging business relationships (e.g., buying and selling) in a partially or wholly automated fashion over a public network such as the Internet (“the Web”). Generally, in WS SOA, a service consumer (or service requester) endpoint and a service provider endpoint exchange messages over a network.
The conversation, i.e. the message exchange, between a service consumer and a service provider could be hampered by many errors. Some of the messages could be lost, others duplicated or reordered, or one of the host systems (either the service requester or provider) may experience failures and lose volatile state information. Web Services Reliable Messaging (WS-RM) is a protocol specification for reliable delivery of messages from source to destination endpoints. The list of interoperability organizations that have originally contributed to the WS-RM specification development include IBM, Microsoft, BEA Systems and Tibco. Currently it is submitted to the Organization for the Advancement of Structured Information Standards (OASIS). When supported by both the source and the destination endpoints, the WS-RM protocol provides a way to establish delivery assurance in Web Services.
To track and manage the reliable delivery of messages, the WS-RM protocol groups exchanged messages in sequences (WS-RM sequences). The sequences include application messages that carry business information and protocol messages, necessary for administrating the messages exchange. In this document the term RM request is used to refer to an application message in a sequence. Each sequence has a unique identifier and each application message in a sequence (RM request) has a number. According to the WS-RM protocol specification, a sequence identifier is generated and communicated between the endpoints prior to transmission of the messages grouped in the sequence. In case of an unsuccessful message delivery, for example, when not all sent RM requests from a sequence are delivered, the WS-RM protocol implementation takes appropriate action like repeating the send operation.
RM sequence data, comprising sequence identifier and message numbers, is persisted and used for tracking the delivery of messages during a reliable conversation until a “successful sequence transmission” or “transmission expiration” event occurs. Persistence considerations related to an endpoint's ability to satisfy the delivery assurance are the responsibility of the WS-RM protocol implementation and as such they are not part of the protocol specification.
To achieve optimal performance and scalability, WS applications are often run on clusters of application server instances. An additional consideration for the WS-RM protocol implementation is how a single RM sequence is to be processed by a plurality of clustered application server instances sharing common persisted data, while still maintaining the advantages of the cluster environment like load balancing, dynamic cache of the information loaded from and stored to shared database, etc.